<?php
//    +----------------------------------------------------------------------
//    | Copyright (c) 2015-2035 http://www.hdphp.cn All rights reserved.
//    | Licensed ( http://www.hdphp.cn/licenses/ )
//    | Author: Jack <sophia2152@qq.com>
//    | 官方网址: http://www.hdphp.cn
//    | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//    | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//    +----------------------------------------------------------------------
namespace app\model\user;

use think\Model;
use hdphp\basic\BaseModel;
use hdphp\traits\ModelTrait;
use think\model\concern\SoftDelete;

/**
 * Class：User
 * 创建人：Jack
 * 创建时间：2023/3/21 7:52 PM
 * @package app\model\user
 */
class User extends BaseModel
{
    use ModelTrait;
    use SoftDelete;

    /**
     * @var string
     */
    protected $pk = 'uid';

    protected $name = 'user';

    protected $insert = ['add_time', 'reg_ip', 'last_time', 'last_ip'];

    protected $hidden = [
        'reg_ip', 'username', 'last_ip', 'password', 'factor'
    ];

    protected $deleteTime = 'delete_time';

    protected $updateTime = false;

    protected function setAddTimeAttr($value)
    {
        return time();
    }

    protected function setRegIpAttr($value)
    {
        return app('request')->ip();
    }

    protected function setLastTimeAttr($value)
    {
        return time();
    }

    protected function setLastIpAttr($value)
    {
        return app('request')->ip();
    }

    /**
     * 用户uid
     * @param Model $query
     * @param $value
     */
    public function searchUidAttr($query, $value)
    {
        if (is_array($value)) {
            $query->whereIn('uid', $value);
        } else {
            $query->where('uid', $value);
        }
    }

    /**
     * 账号搜索器
     * @param Model $query
     * @param $value
     */
    public function searchUsernameAttr($query, $value)
    {
        $query->where('username', $value);
    }

    /**
     * 密码搜索器
     * @param Model $query
     * @param $value
     */
    public function searchPasswordAttr($query, $value)
    {
        $query->where('password', $value);
    }

    /**
     * 秘钥搜索器
     * @param Model $query
     * @param $value
     */
    public function searchFactorAttr($query, $value)
    {
        $query->where('factor', $value);
    }

    /**
     * uid范围查询搜索器
     * @param Model $query
     * @param $value
     */
    public function searchUidsAttr($query, $value)
    {
        $query->whereIn('uid', $value);
    }

    /**
     * 模糊条件搜索器
     * @param Model $query
     * @param $value
     */
    public function searchStoreLikeAttr($query, $value)
    {
        $query->where('uid|phone|mobile', 'LIKE', "%$value%");
    }

    /**
     * 模糊条件搜索器
     * @param Model $query
     * @param $value
     */
    public function searchLikeAttr($query, $value)
    {
        $query->where('username|nickname|phone|mobile|true_name|email|uid', 'LIKE', "%$value%");
    }

    /**
     * 手机号搜索器
     * @param Model $query
     * @param $value
     */
    public function searchPhoneAttr($query, $value)
    {
        if (is_array($value)) {
            $query->whereIn('phone', $value);
        } else {
            $query->where('phone', $value);
        }
    }

    /**
     * 手机号搜索器
     * @param Model $query
     * @param $value
     */
    public function searchMobileAttr($query, $value)
    {
        if (is_array($value)) {
            $query->whereIn('mobile', $value);
        } else {
            $query->where('mobile', $value);
        }
    }

    /**
     * 分组搜索器
     * @param Model $query
     * @param $value
     */
    public function searchGroupIdAttr($query, $value)
    {
        $query->where('group_id', $value);
    }

    /**
     * 用户类型搜索器
     * @param Model $query
     * @param $value
     */
    public function searchUserTypeAttr($query, $value)
    {
        if ($value != '') $query->where('user_type', $value);
    }


    public function searchNicknameAttr($query, $value)
    {
        $query->where('nickname', "like", "%" . $value . "%");
    }

    /**
     * 电子邮箱搜索器
     * @param Model $query
     * @param $value
     */
    public function searchEmailAttr($query, $value)
    {
        if ($value != '') $query->where('email', $value);
    }
}